home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / swtools / MMmalloc / MMfire < prev    next >
Encoding:
Text File  |  1994-08-02  |  1.7 KB  |  87 lines

  1. #!/bin/sh
  2.  
  3. #                    Gianni Mariani  9-Apr-1994 
  4. # Fire the recycle in processes that are armed by MMmalloc
  5. #
  6. #
  7.  
  8. USAGE="MMfire [ -s ]|[ -v ]"    # -s is silent mode. -v very verbose
  9.  
  10. SIGNAL=RTMIN
  11. ARMFILE=/var/malloc/ArmMMmalloc
  12. LOGFILE=/tmp/MMmalloc.log
  13.  
  14. if test -f $ARMFILE ; then
  15.  
  16.     if test "x$1" = "x-s" ; then
  17.     ECHOCMD=true
  18.     VERBOSE=false
  19.     VVERBOSE=false
  20.     elif test "x$1" = "x-v" ; then
  21.     VERBOSE=true
  22.     VVERBOSE=true
  23.     ECHOCMD=echo
  24.     elif test "x$1" = "x-u" ; then
  25.     PROCS=`fuser -q $ARMFILE`
  26.     if test -n "$PROCS" ; then
  27.         echo "Processes currently armed to recycle:"
  28.         ps -f -p `fuser -q $ARMFILE`
  29.     else
  30.         echo "No processes armed to recycle"
  31.     fi
  32.     exit 0
  33.     else 
  34.     VERBOSE=true
  35.     VVERBOSE=false
  36.     ECHOCMD=echo
  37.     fi
  38.  
  39.     if test ! -w $ARMFILE ; then
  40.     $ECHOCMD "WARNING: $0 is best run by root" 1>&2
  41.     fi
  42.  
  43.     PROCS=`( fuser $ARMFILE 2> /dev/null; echo ) | sed -e s/$$//`
  44.  
  45.     if test -n "$PROCS" ; then
  46.  
  47.     if $VERBOSE ; then
  48.  
  49.         if $VVERBOSE ; then
  50.         echo "Processes currently armed to recycle:"
  51.         ps -f -p `fuser -q $ARMFILE`
  52.         fi
  53.         
  54.         # create the log file if nessasary
  55.         if test ! -r $LOGFILE ; then
  56.         OLDMASK=`umask`
  57.         umask 000
  58.         touch $LOGFILE
  59.         umask $OLDMASK
  60.         fi
  61.  
  62.         # Make tail send any new logs to standard out
  63.         ( exec tail -0cf $LOGFILE )&
  64.         PID=$!
  65.         sleep 0
  66.         if fuser $LOGFILE 2>/dev/null | grep -v $PID > /dev/null ; then
  67.         sleep 1
  68.         fi
  69.     
  70.         /bin/kill -$SIGNAL $PROCS 1>&2 2> /dev/null
  71.         
  72.         sleep 3
  73.         exec /bin/kill -TERM $PID 2> /dev/null
  74.     else
  75.         /bin/kill -$SIGNAL $PROCS 2> /dev/null
  76.     fi
  77.     exit 0
  78.     else
  79.     $ECHOCMD "No processes armed to recycle" 1>&2
  80.     exit 1
  81.     fi
  82. else
  83.     $ECHOCMD "$ARMFILE does not exist - Recycle not fired" 1>&2
  84.     exit 2
  85. fi
  86.